import { IPSModelObject } from '../ipsmodel-object';
import { IPSDataEntity } from '../dataentity/ipsdata-entity';
import { IPSDEDataSet } from '../dataentity/ds/ipsdedata-set';
import { IPSWFVersion } from './ipswfversion';
import { IPSWorkflow } from './ipsworkflow';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSWFProcessSubWF
 */
export interface IPSWFProcessSubWF extends IPSModelObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 嵌套流程实体数据集
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 嵌套流程实体数据集
   *
   * @type {IPSDEDataSet}
   */
  get psDEDataSet(): IPSDEDataSet | null;

  /**
   * 嵌套流程实体数据集（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSetMust(): IPSDEDataSet;

  /**
   * 嵌套流程实体
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntity(): IPSDataEntity | null;

  /**
   * 嵌套流程实体
   *
   * @type {IPSDataEntity}
   */
  get psDataEntity(): IPSDataEntity | null;

  /**
   * 嵌套流程实体（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntityMust(): IPSDataEntity;

  /**
   * 嵌套流程版本
   *
   * @type {IPSWFVersion}
   */
  getPSWFVersion(): IPSWFVersion | null;

  /**
   * 嵌套流程版本
   *
   * @type {IPSWFVersion}
   */
  get psWFVersion(): IPSWFVersion | null;

  /**
   * 嵌套流程版本（必须存在）
   *
   * @type {IPSWFVersion}
   */
  getPSWFVersionMust(): IPSWFVersion;

  /**
   * 嵌套流程
   *
   * @type {IPSWorkflow}
   */
  getPSWorkflow(): IPSWorkflow | null;

  /**
   * 嵌套流程
   *
   * @type {IPSWorkflow}
   */
  get psWorkflow(): IPSWorkflow | null;

  /**
   * 嵌套流程（必须存在）
   *
   * @type {IPSWorkflow}
   */
  getPSWorkflowMust(): IPSWorkflow;
}
